package com.example.springboot.mapper;

import com.example.springboot.common.request.PageRequest;
import com.example.springboot.common.request.LoginRequest;
import com.example.springboot.common.request.SetNewPasswordRequest;
import com.example.springboot.entity.Admin;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface AdminMapper {

    /**
     * 根据条件动态查询管理员
     * @param pageRequest
     * @return
     */
    List<Admin> listByCondition(PageRequest pageRequest);

    /**
     * 添加管理员
     * @param admin
     */
    void save(Admin admin);

    /**
     * 更新管理员信息
     * @param admin
     */
    void update(Admin admin);

    /**
     * 根据id查询管理员
     * @param id
     * @return
     */
    Admin getById(Integer id);

    /**
     * 根据id删除管理员
     * @param id
     */
    void deleteById(Integer id);

    /**
     * 根据用户名寻找密码
     * @param username
     * @return
     */
    Admin getByUsername(String username);

    /**
     * 修改密码
     * @param id
     * @param newPassword
     */
    void changePassword(String id, String newPassword);

    /**
     * 根据用户名重置新密码
     * @param request
     */
    void setPasswordByUsername(SetNewPasswordRequest request);

    /**
     * 根据用户名查询管理员
     * @param username
     * @return
     */
    Admin findAdminByUsername(String username);

    /**
     * 根据用户名查询id!=#{id}的管理员信息
     * @param admin
     * @return
     */
    Admin findAdminByUsernameAndId(Admin admin);
}
